home *** CD-ROM | disk | FTP | other *** search
/ Dynamic HTML Construction Kit / Dynamic HTML Construction Kit.iso / earthlink / nscomm / java40.jar / sun / io / CharToByteUnicode.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  1.6 KB  |  107 lines

  1. package sun.io;
  2.  
  3. public class CharToByteUnicode extends CharToByteConverter {
  4.    static final char BYTE_ORDER_MARK = '\ufeff';
  5.    protected boolean marked = false;
  6.    static final int UNKNOWN = 0;
  7.    static final int BIG = 1;
  8.    static final int LITTLE = 2;
  9.    protected int byteOrder = 0;
  10.  
  11.    public CharToByteUnicode() {
  12.       SecurityManager.enablePrivilege("UniversalPropertyRead");
  13.       String var1 = System.getProperty("unicode.encoding", "UnicodeBig");
  14.       SecurityManager.revertPrivilege();
  15.       if (var1.equals("UnicodeBig")) {
  16.          this.byteOrder = 1;
  17.       } else if (var1.equals("UnicodeLittle")) {
  18.          this.byteOrder = 2;
  19.       } else {
  20.          this.byteOrder = 1;
  21.       }
  22.    }
  23.  
  24.    public String getCharacterEncoding() {
  25.       switch (this.byteOrder) {
  26.          case 1:
  27.             return "UnicodeBig";
  28.          case 2:
  29.             return "UnicodeLittle";
  30.          default:
  31.             return "UnicodeUnknown";
  32.       }
  33.    }
  34.  
  35.    public int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws ConversionBufferFullException, MalformedInputException {
  36.       super.charOff = var2;
  37.       super.byteOff = var5;
  38.       if (var2 >= var3) {
  39.          return 0;
  40.       } else {
  41.          int var7 = var2;
  42.          int var11 = var5;
  43.          int var9 = var6 - 2;
  44.          if (!this.marked) {
  45.             if (var5 > var9) {
  46.                throw new ConversionBufferFullException();
  47.             }
  48.  
  49.             if (this.byteOrder == 1) {
  50.                var11 = var5 + 1;
  51.                var4[var5] = -2;
  52.                var4[var11++] = -1;
  53.             } else {
  54.                var11 = var5 + 1;
  55.                var4[var5] = -1;
  56.                var4[var11++] = -2;
  57.             }
  58.  
  59.             this.marked = true;
  60.          }
  61.  
  62.          if (this.byteOrder == 1) {
  63.             while(var7 < var3) {
  64.                if (var11 > var9) {
  65.                   super.charOff = var7;
  66.                   super.byteOff = var11;
  67.                   throw new ConversionBufferFullException();
  68.                }
  69.  
  70.                char var15 = var1[var7++];
  71.                var4[var11++] = (byte)(var15 >> 8);
  72.                var4[var11++] = (byte)(var15 & 255);
  73.             }
  74.          } else {
  75.             while(var7 < var3) {
  76.                if (var11 > var9) {
  77.                   super.charOff = var7;
  78.                   super.byteOff = var11;
  79.                   throw new ConversionBufferFullException();
  80.                }
  81.  
  82.                char var10 = var1[var7++];
  83.                var4[var11++] = (byte)(var10 & 255);
  84.                var4[var11++] = (byte)(var10 >> 8);
  85.             }
  86.          }
  87.  
  88.          super.charOff = var7;
  89.          super.byteOff = var11;
  90.          return var11 - var5;
  91.       }
  92.    }
  93.  
  94.    public int flush(byte[] var1, int var2, int var3) {
  95.       super.byteOff = super.charOff = 0;
  96.       return 0;
  97.    }
  98.  
  99.    public void reset() {
  100.       super.byteOff = super.charOff = 0;
  101.    }
  102.  
  103.    public int getMaxBytesPerChar() {
  104.       return 4;
  105.    }
  106. }
  107.